package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.AmountChangeInfoPO;
import com.itlong.cloud.POJO.VO.operate.OperateBalanceAmountGetPageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <desc>
 * 运营-财务平账服务数据库访问接口.
 * </desc>
 *
 * @createDate 2018/9/20
 */
@Mapper
@Repository
public interface IOperateBalanceAccountDao {

    /**
     * <desc>
     * 分页查询平账列表信息
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Juguang.S
     * @createDate 2018-09-20
     */
    List<OperateBalanceAmountGetPageVO> getBalanceAccountInfoByPage(Map<String,Object> params);

    /**
     * <desc>
     * 分页查询平账列表总记录数
     * <desc/>
     *
     * @param params 查询参数
     * @return 总记录数
     * @author Juguang.S
     * @createDate 2018-09-20
     */
    Integer getBalanceAccountInfoCount(Map<String,Object> params);

    /**
     * <desc>
     * 根据ID获取备注信息
     * <desc/>
     *
     * @param changeId 查询ID
     * @return
     * @author Juguang.S
     * @createDate 2018-09-20
     */
    String getRemark(@Param("changeId") String changeId);

    /**
     * <desc>
     * 修改备注信息
     * <desc/>
     *
     * @param changeId 查询ID
     * @return
     * @author Juguang.S
     * @createDate 2018-09-20
     */
    void updateRemark(@Param("changeId") String changeId,
                      @Param("myUserName") String myUserName,
                      @Param("remark") String remark);

    /**
     * <desc>
     * 根据条件查询账务平账信息导出文件
     * <desc/>
     *
     * @param params 查询参数
     * @return
     * @author Juguang.S
     * @createDate 2018-09-20
     */
    List<OperateBalanceAmountGetPageVO> getBalanceAccountInfoExport(Map<String,Object> params);

    /**
     * <desc>
     * 保存
     * <desc/>
     *
     * @param params 保存信息
     * @return sql执行行数
     * @author Juguang.S
     * @createDate 2018-09-23
     */
    Integer save(Map<String,Object> params);

    /**
     * <desc>
     * 查询公司微信商户号的余额
     * <desc/>
     *
     * @return
     * @author Juguang.S
     * @createDate 2018-09-25
     */
    BigDecimal getWechatMchiAccount();

    /**
     * <desc>
     * 查询第三方支付管理中微信的手续费
     * <desc/>
     *
     * @return
     * @author Juguang.S
     * @createDate 2018-09-27
     */
    String getWechatFee();

    /**
     * <desc>
     * 获取当前项目的可提现余额
     * <desc/>
     *
     * @return
     * @author Juguang.S
     * @createDate 2018-09-27
     */
    String getaAllowedCashWithdrawl(@Param("projectId") String projectId);

}
